<?php
	/* Manipulação da tabela em FuncaoAdministrador.php */
	class PaginacaoInstituicao
	{
		public static function instituicao_index_cria_dados()
		{
			GLOBAL $limit, $range, $orderBy, $order, $pagina, $num_linhas; // Variáveis que tem que ficar disponíveis na página index.php
			
			// Pega os valores do $_GET para montar a tabela (os valores são orderBy, order e pagina)
			if(isset($_GET['orderBy']))
				$orderBy = $_GET['orderBy'];
			if(isset($_GET['order']))
				$order = $_GET['order'];
			if(isset($_GET['pagina']))
				$pagina = $_GET['pagina'];
			
			// Pego o número de linhas da tabela usuario
			$num_linhas = executa_query('SELECT COUNT(*) as num_linhas FROM usuario WHERE administrador = 0;', true);
			
			if(is_numeric($pagina) && ($pagina >= 0) && ($pagina <= $num_linhas / $limit)) {
				$offset = $limit * $pagina;
			} else {
				$offset = 0;
			}
			
			// Retorno as linhas a serem escritas na tabela
			return executa_query("SELECT * FROM usuario WHERE administrador = 0 ORDER BY $orderBy $order  LIMIT $limit OFFSET $offset;");
		}
		
		public static function administrador_index_cria_dados()
		{
			GLOBAL $limit, $range, $orderBy, $order, $pagina, $num_linhas; // Variáveis que tem que ficar disponíveis na página index.php
			
			// Pega os valores do $_GET para montar a tabela (os valores são orderBy, order e pagina)
			if(isset($_GET['orderBy']))
				$orderBy = $_GET['orderBy'];
			if(isset($_GET['order']))
				$order = $_GET['order'];
			if(isset($_GET['pagina']))
				$pagina = $_GET['pagina'];
			
			// Pego o número de linhas da tabela usuario
			$num_linhas = executa_query('SELECT COUNT(*) as num_linhas FROM usuario WHERE administrador = 1;', true);
			
			if(is_numeric($pagina) && ($pagina >= 0) && ($pagina <= $num_linhas / $limit)) {
				$offset = $limit * $pagina;
			} else {
				$offset = 0;
			}
			
			// Retorno as linhas a serem escritas na tabela
			return executa_query("SELECT * FROM usuario WHERE administrador = 1 ORDER BY $orderBy $order LIMIT $limit OFFSET $offset;");
		}
		
		public static function usuario_index_escreve_paginacao()
		{
			GLOBAL $limit, $range, $orderBy, $order, $pagina, $num_linhas; // Variáveis que tem que ficar disponíveis na página index.php
			
			// $pages recebe o número de páginas
			$pages = ceil($num_linhas / $limit);
			// $page recebe a página atual no formato de representação
			$page = $pagina + 1;
			
			// Testa se o número de registros é maior que o limit para mostrar ou não as páginas
			if($num_linhas > $limit) {
				// Primeira página
				if($pagina > 1)
					echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. 0 .'">Primeira</a>';
				
				// Página anterior
				if($pagina >= 1)
					echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($pagina - 1) .'" class="ant">Anterior</a>';
				
				// Páginas numeradas com range
				for($i = ($page - $range); $i <= ($page + $range); $i++) {
					if($i > 0 && $i <= $pages){
						if($i == $page)
							echo '<a href="" class="paginaAtual">'.$i.'</a>';
						else
							echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($i - 1) .'">'. $i .'</a>';
					}
				}
				
				// Próxima página
				if($pagina <= $pages - 2)
					echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($pagina + 1) .'" class="prox">Próxima</a>';
				
				// Última página
				if($pagina < $pages - 2)
					echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($pages - 1) .'">Última</a>';
			}
		}

		/* Permissão de acesso */
	
		/**
		 * Cria uma função que verifica apenas se foi passado um id e retorna o registro desse id, se $retorna_registro for igual a true
		 * @param $retorna_registro Indica se o registro do id passado por $_GET deve ser retornado (default: true)
		 * @return Retorna false se não foi passado um id por $_GET. Caso tenha sido passado um id válido: se $retorna_registro = true então retorna o registro desse id, se não retornará true 
		 */
		public static function instituicao_dados_get($retorna_registro = true)
		{
			if(!checa_id_passado()) // Se não foi passado um id por $_GET
			{
				colocaMensagemSession('erro', 'Não foi passado os parâmetros corretos para a página de alterar.');
				header('Location: ./'); // redireciona para a index.php (o gerenciar)
				return false;
			}
			
			if($retorna_registro){
				return executa_query("SELECT * FROM instituicao WHERE id = ".$_GET['id'].";", true); // Retorna o registro do id passado por $_GET
			}
			
			return true;
		}
		
		public static function instituicao_alterar_dados_get()
		{
			return PaginacaoInstituicao::instituicao_dados_get();
		}
		
		public static function instituicao_visualizar_dados_get()
		{
			return PaginacaoInstituicao::instituicao_dados_get();
		}
		
		public static function instituicao_excluir_dados_get()
		{
			return PaginacaoInstituicao::instituicao_dados_get(false);
		}
	}
?>